﻿// 禁用编辑窗口保存后自动刷新的解决方案

// 保存页面滚动位置
var savedScrollPosition = 0;
var scrollPositionKey = 'fastadmin_scroll_position_' + location.pathname;

// 保存滚动位置的函数
function saveScrollPosition() {
    savedScrollPosition = $(window).scrollTop();
    sessionStorage.setItem(scrollPositionKey, savedScrollPosition);
}

// 恢复滚动位置的函数
function restoreScrollPosition() {
    var position = savedScrollPosition || sessionStorage.getItem(scrollPositionKey) || 0;
    if (position > 0) {
        $(window).scrollTop(position);
        savedScrollPosition = 0;
        sessionStorage.removeItem(scrollPositionKey);
    }
}

// 页面加载时恢复滚动位置
$(document).ready(function() {
    restoreScrollPosition();
});

// 重写 Fast.api.close 方法，完全禁用刷新回调
$(document).ready(function() {
    setTimeout(function() {
        if (typeof Fast !== 'undefined' && Fast.api && Fast.api.close) {
            Fast.api._originalClose = Fast.api.close;
            
            Fast.api.close = function(data) {
                var index = parent.Layer.getFrameIndex(window.name);
                
                // 保存滚动位置
                if (parent.saveScrollPosition) {
                    parent.saveScrollPosition();
                }
                
                // 只关闭弹窗，不调用任何回调
                parent.Layer.close(index);
                
                // 显示成功提示
                if (data && data.msg) {
                    parent.Toastr && parent.Toastr.success(data.msg);
                } else if (data) {
                    parent.Toastr && parent.Toastr.success('操作成功');
                }
                
                // 延迟恢复滚动位置
                setTimeout(function() {
                    if (parent.restoreScrollPosition) {
                        parent.restoreScrollPosition();
                    }
                }, 100);
            };
        }
    }, 500);
});

// 拦截 fa.event.success 事件
$(document).on('fa.event.success', function (event, data) {
    // 保存滚动位置
    saveScrollPosition();
    
    // 阻止默认行为
    event.preventDefault();
    event.stopPropagation();

    // 显示成功提示
    if (data && data.msg) {
        Toastr.success(data.msg);
    } else {
        Toastr.success('操作成功');
    }

    // 延迟恢复滚动位置
    setTimeout(function() {
        restoreScrollPosition();
    }, 200);

    return false;
});

// 拦截页面刷新
$(document).ready(function() {
    var originalReload = location.reload;
    
    location.reload = function(forceReload) {
        saveScrollPosition();
        originalReload.call(location, forceReload);
    };
});

// 将函数暴露到全局
window.saveScrollPosition = saveScrollPosition;
window.restoreScrollPosition = restoreScrollPosition;